#ifndef lint
static char yysccsid[] = "@(#)yaccpar	1.8 (Berkeley) 01/20/90";
#endif
#define YYBYACC 1
#line 2 "cvbpl.y"
  import java.io.*;
#line 8 "y.tab.c"
#define NL 257
#define FUNCSYM 258
#define PROGSYM 259
#define IDENT 260
#define INT 261
#define FLOAT 262
#define VOID 263
#define HISTOGRAM 264
#define MATRIX 265
#define IMAGE 266
#define STRING 267
#define HANDLE 268
#define ISNE 269
#define ISEQ 270
#define LT 271
#define GT 272
#define LE 273
#define GE 274
#define PLUS 275
#define MULT 276
#define DIV 277
#define MINUS 278
#define CONV 279
#define SHL 280
#define SHR 281
#define ASSIGN 282
#define IF 283
#define ELSE 284
#define WHILE 285
#define FOR 286
#define BREAK 287
#define CONTINUE 288
#define CSTRING 289
#define NEG 290
#define YYERRCODE 256
short yylhs[] = {                                        -1,
    0,    0,    3,    3,    3,    3,    5,    5,    5,    5,
    5,    5,    5,    5,    6,    6,    8,    8,    8,    9,
    9,    9,    9,   10,   10,   10,   11,   11,   11,   11,
   11,   12,   12,   12,   13,   13,   13,    4,    4,    7,
    7,   14,   16,   16,   17,   17,   17,   17,   19,   19,
   18,   18,   15,   15,   15,   15,   15,   15,   15,   15,
   20,   20,   21,   21,   22,   22,   23,   24,   24,   25,
   25,   25,   25,   25,   26,   26,   27,   27,   31,   31,
   31,   31,   28,   28,   29,   29,   32,   32,   33,   33,
   34,   30,   30,    1,   35,   35,    2,   36,   37,   37,
   38,   38,   39,
};
short yylen[] = {                                         2,
    2,    1,    1,    3,    1,    1,    1,    4,    6,    2,
    4,    3,    3,   10,    1,    3,    1,    2,    2,    1,
    3,    3,    3,    1,    3,    3,    1,    3,    3,    3,
    3,    1,    3,    3,    1,    3,    3,    1,    3,    1,
    0,    3,    1,    3,    1,    4,    3,    3,    1,    3,
    1,    3,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    3,    3,    1,    3,    3,    1,    3,    1,
    1,    1,    1,    1,    2,    1,    3,    2,    1,    1,
    2,    2,    5,    7,    7,   11,    1,    3,    1,    3,
    3,    2,    2,    4,    1,    2,    2,    3,    4,    3,
    1,    3,    2,
};
short yydefred[] = {                                      0,
    0,    0,    0,    0,    2,    0,    0,   97,    1,   53,
   54,   60,   57,   55,   56,   58,   59,    0,    0,   95,
    3,    0,    0,    0,    0,    0,    0,    5,    0,    0,
    0,   76,   78,    7,    0,    0,    0,    0,    0,    0,
    0,    0,   79,    0,   80,   70,   71,   72,   73,   74,
    0,    0,    0,   94,   96,    0,    0,    0,   92,   93,
    6,   18,    0,   19,   75,    0,    0,   10,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   51,    0,    0,   43,    0,   77,   82,
   81,    0,   98,    0,    0,   87,    0,    4,   12,    0,
    0,    0,    0,   13,   39,   21,   22,   23,   20,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   42,    0,    0,  100,    0,    0,  101,    0,    0,
    0,    0,   11,    0,    0,    8,    0,   52,   44,    0,
    0,   61,   48,   62,   47,   49,    0,  103,   99,    0,
    0,    0,    0,   88,   16,   40,    0,    0,    0,    0,
    0,   65,   46,    0,  102,    0,    0,    0,    0,    9,
   63,   68,    0,    0,   64,   50,   84,   85,    0,    0,
   89,    0,    0,   67,   66,    0,    0,    0,    0,   69,
   91,    0,   90,    0,    0,   14,   86,
};
short yydgoto[] = {                                       3,
    4,    5,   34,   35,   36,  101,  102,   37,   38,   39,
   40,   41,   42,   43,   18,   86,   87,   88,  147,  143,
  144,  161,  162,  173,   45,   46,   47,   48,   49,   50,
   51,   97,  180,  181,   19,   20,   53,  127,  128,
};
short yysindex[] = {                                   -241,
 -118, -112,    0, -240,    0,  -57,  -33,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, -231,  -92,    0,
    0,    0,   -4,    1,   15,  -16,   16,    0,   36,   36,
   36,    0,    0,    0,   30,  -38, -223, -232, -226,  -90,
 -165, -170,    0,  -39,    0,    0,    0,    0,    0,    0,
  -24,   46, -112,    0,    0,   36,   36, -169,    0,    0,
    0,    0,   52,    0,    0,  -13,   36,    0, -164,   36,
   36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
   36,   36,   36,    0,  -39,  -21,    0,  -37,    0,    0,
    0,  299,    0,   59,   61,    0,   20,    0,    0,    0,
   33,   40,  -30,    0,    0,    0,    0,    0,    0, -232,
 -232, -226, -226, -226, -226,  -90,  -90, -165, -165,   65,
  -39,    0,   17,   27,    0, -143,   38,    0,   -3,    2,
   64, -141,    0,   36,   36,    0,   36,    0,    0,   17,
    7,    0,    0,    0,    0,    0,   39,    0,    0,  -57,
 -145,   -3,   53,    0,    0,    0,   99,   56,  105,   36,
  -40,    0,    0,   36,    0,   -3,   25,   36,   36,    0,
    0,    0,  -31,    7,    0,    0,    0,    0,  100,  -22,
    0,  106,   36,    0,    0,   36,   34,   36,   36,    0,
    0,   -3,    0,  122,   41,    0,    0,
};
short yyrindex[] = {                                      0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   57,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   74,   93,   29,  317,  380,
   97,   68,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  -19,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -10,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  121,
  264,  339,  359,  372,  385,  416,  418,  101,  392,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  133,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    6,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  110,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  137,    0,
    0,    0,    0,    0,    0,    0,    0,
};
short yygindex[] = {                                      0,
    0,  181,    0,  634,    0,    0, -111,  475,   49,  119,
   55,   31,    0,  136,    3,    0,   67,  104,    0,    0,
   51,    0,   18,    0,  -45,    0,   13,    0,    0,    0,
    0,    0,    0,   12,    0,  182,    0,    0,   62,
};
#define YYTABLESIZE 823
short yytable[] = {                                      31,
   85,   66,  124,  174,    6,   91,   30,   69,   31,   44,
    7,   29,  183,  137,    8,   30,    1,    2,    2,   31,
   29,  188,  121,  157,   45,   32,   30,   99,   52,   31,
   15,   29,   54,   15,   32,   56,   30,  122,   83,   45,
   57,   29,   59,   71,   72,   83,   73,   40,   74,   31,
   83,   75,   67,   44,   58,   32,  140,  182,   70,   31,
  131,   29,  136,  132,   83,   93,   30,  145,   31,   24,
  187,   29,   24,  133,   60,   30,  134,  194,  149,  163,
   29,  150,  164,  151,  175,   92,   24,   24,   65,    7,
   96,   33,   98,  184,  126,  104,    6,  135,    7,  129,
   89,  130,    6,   80,   81,  138,  167,   68,   38,   82,
   83,   38,  118,  119,   17,    6,  148,   17,  154,    7,
  177,   24,  110,  111,  152,   38,   38,  153,   83,  160,
   83,   17,   17,   20,  116,  117,   20,   35,  166,  141,
   35,   36,  169,  168,   36,  171,  195,    6,  170,  178,
   20,   20,  126,   24,   35,   35,  192,  186,   36,   36,
   38,   25,  196,  189,   25,  197,   17,   41,   10,   11,
   12,   13,   14,   15,   16,   17,   41,   41,   25,   25,
   76,   77,   78,   79,    9,   20,   90,  139,  120,   35,
  159,  185,   38,   36,  112,  113,  114,  115,   17,  193,
   55,    0,    6,   10,   11,   12,   13,   14,   15,   16,
   17,  165,    0,   25,    0,    0,    0,   20,    0,    0,
   84,   35,    0,    0,    0,   36,   21,   22,   11,   12,
   13,   14,   15,   16,   17,   21,   22,   11,   12,   13,
   14,   15,   16,   17,  123,   25,   21,   61,    0,   23,
    0,   24,   25,   26,   27,   28,   21,   61,   23,    0,
   24,   25,   26,   27,   28,   83,   83,   83,   83,   83,
   83,   83,   83,   83,    0,   28,   21,   61,    0,   23,
    0,   24,   25,   26,   27,   28,   21,   61,   83,    0,
   83,   83,   83,   83,   83,   21,   61,   24,   24,   24,
   24,   24,   24,   24,   26,   28,   24,   26,   24,   24,
    0,    0,    0,    0,    0,   28,   53,    0,    0,    0,
    0,   26,   26,    0,   28,    6,    6,    6,    6,    6,
    6,    6,    6,    6,    6,    6,    6,    6,    6,  125,
    0,    0,   17,   17,   17,   17,   17,   17,   17,   17,
   17,   17,   17,   17,   17,   17,   26,   27,    0,    0,
   27,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   27,   27,   35,   35,    0,   28,
   36,   36,   28,    0,    0,    0,    0,    0,   26,   25,
   25,   25,   25,   25,   25,   25,   28,   28,   25,   29,
   25,   25,   29,    0,    0,    0,    0,    0,    0,   27,
    0,    0,   30,    0,    0,   30,   29,   29,    0,    0,
   32,    0,    0,   32,    0,   31,    0,    0,   31,   30,
   30,   28,   37,    0,    0,   37,    0,   32,   32,    0,
    0,   27,   31,   31,    0,    0,    0,    0,    0,   37,
   37,   29,    0,    0,    0,    0,   34,    0,   33,   34,
    0,   33,    0,   28,   30,    0,    0,    0,    0,    0,
    0,    0,   32,   34,   34,   33,   33,   31,    0,    0,
    0,    0,    0,   29,   37,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   30,    0,    0,    0,
    0,    0,    0,   62,   32,   64,    0,    0,   34,   31,
   33,    0,    0,    0,    0,    0,   37,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   26,   26,   26,   26,   26,   26,   26,    0,
   34,   26,   33,   26,   26,  106,  107,  108,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,    0,   10,
   11,   12,   13,   14,   15,   16,   17,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   27,   27,   27,   27,   27,
   27,    0,    0,    0,    0,    0,   27,   27,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   28,   28,   28,
   28,   28,   28,    0,    0,    0,    0,    0,   28,   28,
    0,    0,    0,    0,    0,    0,    0,   29,   29,   29,
   29,   29,   29,    0,    0,    0,    0,    0,   29,   29,
   30,   30,   30,   30,   30,   30,    0,    0,   32,   32,
    0,   30,   30,   31,   31,   31,   31,   31,   31,   32,
   32,    0,    0,   63,   31,   31,    0,    0,    0,    0,
    0,   37,   37,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   34,   34,   33,   33,    0,   94,
   95,    0,    0,    0,    0,   34,   34,   33,   33,  100,
  103,    0,    0,  105,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  142,  146,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  155,  156,    0,
  158,    0,    0,   63,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  172,    0,    0,    0,  176,    0,    0,
    0,  179,  156,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  190,    0,    0,  191,
    0,  179,  156,
};
short yycheck[] = {                                      33,
   40,   40,   40,   44,  123,   51,   40,   46,   33,    7,
  123,   45,   44,   44,    2,   40,  258,  259,  259,   33,
   45,   44,   44,  135,   44,   59,   40,   41,  260,   33,
   41,   45,  125,   44,   59,   40,   40,   59,   33,   59,
   40,   45,   59,  276,  277,   40,  279,   58,  275,   33,
   45,  278,   91,   51,   40,   59,   40,  169,  282,   33,
   41,   45,   93,   44,   59,   53,   40,   41,   33,   41,
   93,   45,   44,   41,   59,   40,   44,  189,   41,   41,
   45,   44,   44,  129,  125,   40,   58,   59,   59,  123,
  260,  125,   41,  125,   92,  260,   40,   58,  123,   41,
  125,   41,   46,  269,  270,   41,  152,  146,   41,  280,
  281,   44,   82,   83,   41,   59,  260,   44,  260,  123,
  166,   93,   74,   75,  123,   58,   59,   64,  123,  123,
  125,   58,   59,   41,   80,   81,   44,   41,  284,  123,
   44,   41,   44,   91,   44,   41,  192,   91,   93,  125,
   58,   59,  150,  125,   58,   59,  123,   58,   58,   59,
   93,   41,   41,   58,   44,  125,   93,   58,  261,  262,
  263,  264,  265,  266,  267,  268,   44,   41,   58,   59,
  271,  272,  273,  274,    4,   93,   51,  121,   85,   93,
  140,  174,  125,   93,   76,   77,   78,   79,  125,  188,
   19,   -1,  146,  261,  262,  263,  264,  265,  266,  267,
  268,  150,   -1,   93,   -1,   -1,   -1,  125,   -1,   -1,
  260,  125,   -1,   -1,   -1,  125,  260,  261,  262,  263,
  264,  265,  266,  267,  268,  260,  261,  262,  263,  264,
  265,  266,  267,  268,  282,  125,  260,  261,   -1,  283,
   -1,  285,  286,  287,  288,  289,  260,  261,  283,   -1,
  285,  286,  287,  288,  289,  260,  261,  262,  263,  264,
  265,  266,  267,  268,   -1,  289,  260,  261,   -1,  283,
   -1,  285,  286,  287,  288,  289,  260,  261,  283,   -1,
  285,  286,  287,  288,  289,  260,  261,  269,  270,  271,
  272,  273,  274,  275,   41,  289,  278,   44,  280,  281,
   -1,   -1,   -1,   -1,   -1,  289,  260,   -1,   -1,   -1,
   -1,   58,   59,   -1,  289,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,   41,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
  277,  278,  279,  280,  281,  282,   93,   41,   -1,   -1,
   44,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  281,   58,   59,  280,  281,   -1,   41,
  280,  281,   44,   -1,   -1,   -1,   -1,   -1,  125,  269,
  270,  271,  272,  273,  274,  275,   58,   59,  278,   41,
  280,  281,   44,   -1,   -1,   -1,   -1,   -1,   -1,   93,
   -1,   -1,   41,   -1,   -1,   44,   58,   59,   -1,   -1,
   41,   -1,   -1,   44,   -1,   41,   -1,   -1,   44,   58,
   59,   93,   41,   -1,   -1,   44,   -1,   58,   59,   -1,
   -1,  125,   58,   59,   -1,   -1,   -1,   -1,   -1,   58,
   59,   93,   -1,   -1,   -1,   -1,   41,   -1,   41,   44,
   -1,   44,   -1,  125,   93,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   93,   58,   59,   58,   59,   93,   -1,   -1,
   -1,   -1,   -1,  125,   93,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
   -1,   -1,   -1,   29,  125,   31,   -1,   -1,   93,  125,
   93,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,   -1,
  125,  278,  125,  280,  281,   71,   72,   73,   74,   75,
   76,   77,   78,   79,   80,   81,   82,   83,   -1,  261,
  262,  263,  264,  265,  266,  267,  268,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,   -1,   -1,   -1,   -1,   -1,  280,  281,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,   -1,   -1,   -1,   -1,   -1,  280,  281,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,   -1,   -1,   -1,   -1,   -1,  280,  281,
  269,  270,  271,  272,  273,  274,   -1,   -1,  269,  270,
   -1,  280,  281,  269,  270,  271,  272,  273,  274,  280,
  281,   -1,   -1,   30,  280,  281,   -1,   -1,   -1,   -1,
   -1,  280,  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  269,  270,  269,  270,   -1,   56,
   57,   -1,   -1,   -1,   -1,  280,  281,  280,  281,   66,
   67,   -1,   -1,   70,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  123,  124,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  134,  135,   -1,
  137,   -1,   -1,  140,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  160,   -1,   -1,   -1,  164,   -1,   -1,
   -1,  168,  169,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  183,   -1,   -1,  186,
   -1,  188,  189,
};
#define YYFINAL 3
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 290
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'!'",0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,0,
0,0,0,"':'","';'",0,0,0,0,"'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'\\222'",0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"NL","FUNCSYM","PROGSYM","IDENT",
"INT","FLOAT","VOID","HISTOGRAM","MATRIX","IMAGE","STRING","HANDLE","ISNE",
"ISEQ","LT","GT","LE","GE","PLUS","MULT","DIV","MINUS","CONV","SHL","SHR",
"ASSIGN","IF","ELSE","WHILE","FOR","BREAK","CONTINUE","CSTRING","NEG",
};
char *yyrule[] = {
"$accept : translation_unit",
"translation_unit : func_block prog_block",
"translation_unit : prog_block",
"primary_expression : IDENT",
"primary_expression : '(' assignment_expression ')'",
"primary_expression : CSTRING",
"primary_expression : INT",
"postfix_expression : primary_expression",
"postfix_expression : postfix_expression '[' assignment_expression ']'",
"postfix_expression : postfix_expression '[' assignment_expression ',' assignment_expression ']'",
"postfix_expression : postfix_expression '\\222'",
"postfix_expression : postfix_expression '(' argument_expression_list ')'",
"postfix_expression : postfix_expression '(' ')'",
"postfix_expression : postfix_expression '.' IDENT",
"postfix_expression : postfix_expression '(' assignment_expression_opt ':' assignment_expression_opt ',' assignment_expression_opt ':' assignment_expression_opt ')'",
"argument_expression_list : assignment_expression",
"argument_expression_list : argument_expression_list ',' assignment_expression",
"unary_expression : postfix_expression",
"unary_expression : '-' unary_expression",
"unary_expression : '!' unary_expression",
"multiplicative_expression : unary_expression",
"multiplicative_expression : multiplicative_expression MULT unary_expression",
"multiplicative_expression : multiplicative_expression DIV unary_expression",
"multiplicative_expression : multiplicative_expression CONV unary_expression",
"additive_expression : multiplicative_expression",
"additive_expression : additive_expression PLUS multiplicative_expression",
"additive_expression : additive_expression MINUS multiplicative_expression",
"relational_expression : additive_expression",
"relational_expression : relational_expression LT additive_expression",
"relational_expression : relational_expression GT additive_expression",
"relational_expression : relational_expression LE additive_expression",
"relational_expression : relational_expression GE additive_expression",
"equality_expression : relational_expression",
"equality_expression : equality_expression ISEQ relational_expression",
"equality_expression : equality_expression ISNE relational_expression",
"imageio_expr : equality_expression",
"imageio_expr : imageio_expr SHL equality_expression",
"imageio_expr : imageio_expr SHR equality_expression",
"assignment_expression : imageio_expr",
"assignment_expression : unary_expression ASSIGN assignment_expression",
"assignment_expression_opt : assignment_expression",
"assignment_expression_opt :",
"declaration : type_specifier init_declarator_list ';'",
"init_declarator_list : init_declarator",
"init_declarator_list : init_declarator_list ',' init_declarator",
"init_declarator : declarator",
"init_declarator : declarator '(' argument_list ')'",
"init_declarator : declarator '(' ')'",
"init_declarator : declarator ASSIGN initializer",
"argument_list : assignment_expression",
"argument_list : argument_list ',' assignment_expression",
"declarator : IDENT",
"declarator : '(' declarator ')'",
"type_specifier : INT",
"type_specifier : FLOAT",
"type_specifier : MATRIX",
"type_specifier : IMAGE",
"type_specifier : HISTOGRAM",
"type_specifier : STRING",
"type_specifier : HANDLE",
"type_specifier : VOID",
"initializer : assignment_expression",
"initializer : matrix_expression",
"matrix_expression : '(' matrix_expression ')'",
"matrix_expression : '{' matrix_row_list '}'",
"matrix_row_list : matrix_row",
"matrix_row_list : matrix_row_list ',' matrix_row",
"matrix_row : '{' matrix_element_list '}'",
"matrix_element_list : assignment_expression",
"matrix_element_list : matrix_element_list ',' assignment_expression",
"statement : expression_statement",
"statement : compound_statement",
"statement : selection_statement",
"statement : iteration_statement",
"statement : jump_statement",
"expression_statement : assignment_expression ';'",
"expression_statement : ';'",
"compound_statement : '{' declaration_or_statement_list '}'",
"compound_statement : '{' '}'",
"declaration_or_statement_list : declaration",
"declaration_or_statement_list : statement",
"declaration_or_statement_list : declaration_or_statement_list statement",
"declaration_or_statement_list : declaration_or_statement_list declaration",
"selection_statement : IF '(' assignment_expression ')' statement",
"selection_statement : IF '(' assignment_expression ')' statement ELSE statement",
"iteration_statement : WHILE '(' assignment_expression ')' '{' statement '}'",
"iteration_statement : FOR '(' identifier_list ')' '@' '[' range_list ']' '{' statement '}'",
"identifier_list : IDENT",
"identifier_list : identifier_list ',' IDENT",
"range_list : range",
"range_list : range_list ',' range",
"range : assignment_expression ':' assignment_expression",
"jump_statement : BREAK ';'",
"jump_statement : CONTINUE ';'",
"func_block : FUNCSYM '{' function_definition_list '}'",
"function_definition_list : function_definition",
"function_definition_list : function_definition_list function_definition",
"prog_block : PROGSYM compound_statement",
"function_definition : type_specifier function_declarator compound_statement",
"function_declarator : IDENT '(' parameter_list ')'",
"function_declarator : IDENT '(' ')'",
"parameter_list : parameter_declaration",
"parameter_list : parameter_list ',' parameter_declaration",
"parameter_declaration : type_specifier IDENT",
};
#endif
#ifndef YYSTYPE
typedef int YYSTYPE;
#endif
#define yyclearin (yychar=(-1))
#define yyerrok (yyerrflag=0)
#ifdef YYSTACKSIZE
#ifndef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#endif
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 500
#define YYMAXDEPTH 500
#endif
#endif
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short yyss[YYSTACKSIZE];
YYSTYPE yyvs[YYSTACKSIZE];
#define yystacksize YYSTACKSIZE
#line 255 "cvbpl.y"

  private Yylex lexer;


  private int yylex () {
    int yyl_return = -1;
    try {
      yylval = new ParserVal(0);
      yyl_return = lexer.yylex();
    }
    catch (IOException e) {
      System.err.println("IO error :"+e);
    }
    return yyl_return;
  }


  public void yyerror (String error) {
    System.err.println ("Error: " + error);
  }


  public Parser(Reader r) {
    lexer = new Yylex(r, this);
  }


  static boolean interactive;

  public static void main(String args[]) throws IOException {
    System.out.println("CVBPL");

    Parser yyparser;
    if ( args.length > 0 ) {
      // parse a file
      yyparser = new Parser(new FileReader(args[0]));
    }
    else {
      // interactive mode
      System.out.println("[Quit with CTRL-D]");
      System.out.print("Expression: ");
      interactive = true;
	    yyparser = new Parser(new InputStreamReader(System.in));
    }

    yyparser.yyparse();
    
    if (interactive) {
      System.out.println();
      System.out.println("Exiting");
    }
  }
#line 526 "y.tab.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
    register int yym, yyn, yystate;
#if YYDEBUG
    register char *yys;
    extern char *getenv();

    if (yys = getenv("YYDEBUG"))
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif

    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    yyssp = yyss;
    yyvsp = yyvs;
    *yyssp = yystate = 0;

yyloop:
    if (yyn = yydefred[yystate]) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("yydebug: state %d, reading %d (%s)\n", yystate,
                    yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("yydebug: state %d, shifting to state %d (%s)\n",
                    yystate, yytable[yyn],yyrule[yyn]);
#endif
        if (yyssp >= yyss + yystacksize - 1)
        {
            goto yyoverflow;
        }
        *++yyssp = yystate = yytable[yyn];
        *++yyvsp = yylval;
        yychar = (-1);
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;
#ifdef lint
    goto yynewerror;
#endif
yynewerror:
    yyerror("syntax error");
#ifdef lint
    goto yyerrlab;
#endif
yyerrlab:
    ++yynerrs;
yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("yydebug: state %d, error recovery shifting\
 to state %d\n", *yyssp, yytable[yyn]);
#endif
                if (yyssp >= yyss + yystacksize - 1)
                {
                    goto yyoverflow;
                }
                *++yyssp = yystate = yytable[yyn];
                *++yyvsp = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("yydebug: error recovery discarding state %d\n",
                            *yyssp);
#endif
                if (yyssp <= yyss) goto yyabort;
                --yyssp;
                --yyvsp;
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("yydebug: state %d, error recovery discards token %d (%s)\n",
                    yystate, yychar, yys);
        }
#endif
        yychar = (-1);
        goto yyloop;
    }
yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("yydebug: state %d, reducing by rule %d (%s)\n",
                yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    yyval = yyvsp[1-yym];
    switch (yyn)
    {
    }
    yyssp -= yym;
    yystate = *yyssp;
    yyvsp -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("yydebug: after reduction, shifting from state 0 to\
 state %d\n", YYFINAL);
#endif
        yystate = YYFINAL;
        *++yyssp = YYFINAL;
        *++yyvsp = yyval;
        if (yychar < 0)
        {
            if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            {
                yys = 0;
                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                if (!yys) yys = "illegal-symbol";
                printf("yydebug: state %d, reading %d (%s)\n",
                        YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("yydebug: after reduction, shifting from state %d \
to state %d\n", *yyssp, yystate);
#endif
    if (yyssp >= yyss + yystacksize - 1)
    {
        goto yyoverflow;
    }
    *++yyssp = yystate;
    *++yyvsp = yyval;
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    return (1);
yyaccept:
    return (0);
}
